/*
上网统计
在一个网络系统中有 N 个用户、M 次上网记录。每个用户可以自己注册一个用户名，每个用户名是一个只含小写字母且长度小于 1000 的字符串。
每个上网的账号每次上网都会浏览网页，网页名是以一个只含小写字母且长度小于 1000 的字符串，每次上网日志里都会有记录，现在请统计每个用户每次浏览了多少个网页。

单组输入
第 1 行包含两个用 1 个空格隔开的正整数 N（1≤N≤1000）和 M（1≤M≤5000）。
第 2到M+1 行，每行包含 2 个用 1 个空格隔开的字符串，分别表示用户名和浏览的网页名。

输出
共 N 行，每行的第一个字符串是用户名，接下来的若干字符串是这个用户依次浏览的网页名（之间用一个空格隔开）。按照用户名出现的次序排序输出。

Sample Input
5 7
goodstudyer bookshopa
likespacea spaceweb
goodstudyer bookshopb
likespaceb spaceweb
likespacec spaceweb
likespacea juiceshop
gameplayer gameweb

Sample Output
goodstudyer bookshopa bookshopb
likespacea spaceweb juiceshop
likespaceb spaceweb
likespacec spaceweb
gameplayer gameweb
*/
#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n,m,i;
    string name,web;
    vector<string> user; //按顺序存用户
    map<string,vector<string>> mp; // 按顺序存用户对应的上网记录，网页不必去重
    vector<string>:: iterator itv,itm;
    cin>>n>>m;
    for(i=0;i<m;i++)
    {
        cin>>name>>web;
        if(mp.find(name)==mp.end())
        {
            user.push_back(name);
        }
        mp[name].push_back(web);
    }
    for(itv=user.begin();itv!=user.end();itv++)
    {
        cout<<*itv;
        for(itm=mp[*itv].begin();itm!=mp[*itv].end();itm++)
        {
            cout<<" "<<*itm;
        }
        cout<<endl;
    }

    return 0;
}